package com.kapcb.statemachine;

/**
 * <a>Title: Visitor </a>
 * <a>Author: Kapcb <a>
 * <a>Description: Visitor <a>
 *
 * @author Kapcb
 * @version 1.0
 * @date 2024/7/13 22:12
 * @since 1.0
 */
public interface Visitor {

    char LF = '\n';

    /**
     * @param visitable the element to be visited.
     * @return
     */
    String visitOnEntry(StateMachine<?, ?, ?> visitable);

    /**
     * @param visitable the element to be visited.
     * @return
     */
    String visitOnExit(StateMachine<?, ?, ?> visitable);

    /**
     * @param visitable the element to be visited.
     * @return
     */
    String visitOnEntry(State<?, ?, ?> visitable);

    /**
     * @param visitable the element to be visited.
     * @return
     */
    String visitOnExit(State<?, ?, ?> visitable);

}
